<?php
session_start(); 

include ("utils.php");
//definicion de constantes globales
 $desdeRow = 8; //valor de la fila desde donde empieza a imprimir la tabla de resultados
 $desdeCol = 1; //valor de la columna desde donde empieza a imprimir la tabla de resultados, basandose en el array "$cols"
 $cols = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N'); //columnas para pasar a strin los valores integer... 0 es A, 1 es B...

function generateTableInObjectExel($objExcel, $consul, $iniCol, $iniRow, $viewCols){
	global $cols;
	// Seteamos Headers de tabla
	$aCampos = array_keys($consul->CAMPOS); 
	$actualCol = $iniCol; 
	for ($i=0; $i<count($aCampos); $i++) {
	   if (($viewCols==NULL)||(($viewCols!=NULL)&&(in_array($i, $viewCols)))){
		$objExcel->getActiveSheet()->setCellValue($cols[$actualCol].$iniRow, $aCampos[$i]);
		$actualCol++;
		}
	}
	// Agregamos datos
	$row = $iniRow+1;
	for ($i=0; $i<$consul->cantidad(); $i++) {
	  $col = $iniCol;
	  for ($j=0; $j<count($aCampos); $j++) {
  		if (($viewCols==NULL)||(($viewCols!=NULL)&&(in_array($j, $viewCols)))){
			$objExcel->getActiveSheet()->setCellValue($cols[$col].$row, ReplaceChars($consul->campoPorPosicion($j, $i)));
			$col++;
			}
		}
	  $row++;	
	}
	
}

if (isset($_SESSION['cliente']))
{

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-type: application/x-msexcel");
header("Content-type: application/csv");
header("Content-Disposition: attachment;filename=".$_REQUEST['nom1nom2'].time().".csv");
header("Content-Transfer-Encoding: binary ");

 /** Error reporting */
error_reporting(E_ALL);
 
/** Include path **/
ini_set('include_path', 'phpToExcelLib/');
 
/** PHPExcel */
include ("phpToExcelLib/PHPExcel.php");
 
/** Inclusion del Writer Deseado */
include ("phpToExcelLib/PHPExcel/Writer/CSV.php");

// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

// Propiedades del documento
$objPHPExcel->getProperties()->setCreator("Bykom - MAPGUIDE WEB SITE");
$objPHPExcel->getProperties()->setLastModifiedBy("Bykom - MAPGUIDE WEB SITE");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX - MAPGUIDE WEB SITE REPORTS");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX - MAPGUIDE WEB SITE REPORTS");
$objPHPExcel->getProperties()->setDescription("Document for Office 2007 XLSX, generated using PHP classes.");

//seteamos la pagina activa del excel (la 0)
$objPHPExcel->setActiveSheetIndex(0);

// GENERAMOS DATOS SEGUN tipoConsulta
 switch ($tipoConsulta)
      {      
       case "HistoricoAVL":
         $velocidadMax = $_REQUEST['velocidadMax'];
         $velocidadPromedio = $_REQUEST['velocidadPromedio'];
         $distanciaTotal = $_REQUEST['distanciaTotal'];
         $consulta=BykomCliente::Consulta_Historico_Avl_Total($cuenta,$fechai,$fechaf);
		 $views = array(6,8,14);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views);
         break;	 
       case "Zonas":
         $consulta=BykomCliente::Consulta_Zonas_Total($cuenta,0,0);
		 $views = array(0,1,2,3);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views);
         break;
       case "Usuarios":  
         $consulta=BykomCliente::Consulta_Usuarios_Total($cuenta,0,0); 
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, NULL);
         break;
       case "Eventos":
         $consulta=BykomCliente::Consulta_Evento_Total($cuenta,$fechai,$fechaf,$limitacion,$tipo,0,0);
		 $views = array(0,1,2,3);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views);  
         break;
       case "Contactos":  
         $consulta=BykomCliente::Consulta_Contactos_Total($cuenta,0,0); 
		 $views = array(0,1,2,3);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views);
         break;
       case "Horarios":  
         $consulta=BykomCliente::HorariosCuenta($cuenta);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, NULL);
		 $cantElements = $consulta->cantidad() + 2;
         $consulta=BykomCliente::HorariosCuenta_Ex($cuenta);
		 if ($consulta->cantidad()){
			 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow + $cantElements, NULL);
			 $cantElements += $consulta->cantidad() + 2;
			 }
         $consulta=BykomCliente::HorariosTolerancia($cuenta);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow + $cantElements, NULL);
         break;  
       case "Facturas":
      	$consulta = BykomCliente::getFacturasByCodigoCl($cuenta, 0, 2);
		generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, NULL);
      	break;
       case "EventosAVL":
	    $views = array(0,1,2,5);
      	$consulta = BykomCliente::Consulta_Historico_Eventos($cuenta,$fechai,$fechaf,$process);
		generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, NULL);
      	break;	
	   case "ParadasAVL":
      	$consulta = BykomCliente::Consulta_Historico_Paradas($cuenta,$fechai,$fechaf,$tiempo);  
		$views = array(0,1,3);
		generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views, NULL);
      	break; 
      	
      }

// Sub-Encabezado
$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Filtro:');
$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Cuenta:');
$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Nombres:');
$objPHPExcel->getActiveSheet()->setCellValue('B4', $filtro);
$objPHPExcel->getActiveSheet()->setCellValue('B5', $codigocuenta);
$objPHPExcel->getActiveSheet()->setCellValue('B6', $nom1nom2);
if ($tipoConsulta=="HistoricoAVL"){
	$objPHPExcel->getActiveSheet()->setCellValue('B7', "Velocidad Maxima: ".$velocidadMax."Km/h - Velocidad Promedio: ".$velocidadPromedio."Km/h - Distancia Total: ".$distanciaTotal."Km");

}

// Nombramos Pagina activa
$objPHPExcel->getActiveSheet()->setTitle('Pagina de reporte');
 
// Output Excel file
$objWriter = new PHPExcel_Writer_CSV($objPHPExcel);
$objWriter->save("php://output");

}    
?>